package com.example.socket;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @Author 郅占伟
 * @ClassName SendData
 * @Description TODO
 * @Date 2024年05月25日
 * @Version: 1.0
 */
public class SendData {
    public static void main(String[] args) {
        int port = 8888;

        try {
            // 创建一个ServerSocket，负责服务端这边监听对应的端口号
            ServerSocket serverSocket = new ServerSocket(port);

            // 接受客户端的请求，在没接收到客户端请求之前，程序会一直处于监听的状态
            Socket accept = serverSocket.accept();

            // 处理客户端的请求，通过socket创建io输入流
            InputStream inputStream = accept.getInputStream();

            // 通过io输入流创建数据传输流
            DataInputStream dataInputStream = new DataInputStream(inputStream);

            // 获取请求的数据
            String data = dataInputStream.readUTF();
            System.out.println("服务端接收到的数据：" + data);

            // 发送数据给客户端
            OutputStream outputStream = accept.getOutputStream();
            DataOutputStream dataOutputStream = new DataOutputStream(outputStream);

            // 给客户端相应数据
            dataOutputStream.writeUTF("服务器响应数据");

            // 关闭资源
            dataInputStream.close();
            dataOutputStream.close();
            inputStream.close();
            outputStream.close();
            accept.close();
            serverSocket.close();

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
